home *** CD-ROM | disk | FTP | other *** search
- /* ssort.c: Generic selection sort */
-
- #include <stddef.h>
-
- void ssort(void *array, size_t nelems, size_t size,
- int (*comp)(const void *, const void *))
- {
- size_t i, j, n;
-
- for (i = 0; i < nelems-1; ++i)
- for (j = i+1; j < nelems; ++j)
- {
- char *p1 = (char *) array + i*size;
- char *p2 = (char *) array + j*size;
- if (comp(p1,p2) > 0)
- for (n = 0; n < size; ++n)
- {
- /* Swap elements byte-by-byte */
- char t = p1[n];
- p1[n] = p2[n];
- p2[n] = t;
- }
- }
- }
-
-